Introduction

library(dplyr)

Attaching package: ‘dplyr’

The following object is masked from ‘package:Biobase’:

    combine

The following objects are masked from ‘package:BiocGenerics’:

    combine, intersect, setdiff, union

The following objects are masked from ‘package:stats’:

    filter, lag

The following objects are masked from ‘package:base’:

    intersect, setdiff, setequal, union
library(ggplot2)
library(plotly)
Registered S3 method overwritten by 'data.table':
  method           from
  print.data.table     
Registered S3 methods overwritten by 'htmltools':
  method               from         
  print.html           tools:rstudio
  print.shiny.tag      tools:rstudio
  print.shiny.tag.list tools:rstudio
Registered S3 method overwritten by 'htmlwidgets':
  method           from         
  print.htmlwidget tools:rstudio

Attaching package: ‘plotly’

The following object is masked from ‘package:ggplot2’:

    last_plot

The following object is masked from ‘package:stats’:

    filter

The following object is masked from ‘package:graphics’:

    layout
library(analogue) # Principal Curves wrapper
Loading required package: vegan
Loading required package: permute
Loading required package: lattice
This is vegan 2.5-7
analogue version 0.17-5

Attaching package: ‘analogue’

The following object is masked from ‘package:NMF’:

    compare
library(fastICA)
library(NMF)

data("iris")

Principal Curves

Fitting principal curves

# https://fromthebottomoftheheap.net/2014/01/09/pcurve-part-2/

x <- iris[1:4]
y <- iris[5]

results_iris_pc <- prcurve(x, maxit = 100)
results_iris_pc

    Principal Curve Fitting

Call: prcurve(X = x, maxit = 100)

Algorithm converged after 11 iterations

           SumSq Proportion
Total     681.37      1.000
Explained 650.45      0.955
Residual   30.92      0.045

Fitted curve uses 17.551 degrees of freedom.

Results in 2D

results_iris_pc_s <- data.frame(results_iris_pc$s[results_iris_pc$tag, ])
results_iris_pc_s['y'] <- y

ggplot() + 
  geom_line(data = results_iris_pc_s, mapping = aes(x = Petal.Length, y = Petal.Width)) +
  geom_point(data = iris, mapping = aes(x = Petal.Length, y = Petal.Width, color = Species))

Results in 3D

fig <- iris %>% 
  mutate(color = case_when(
    Species == 'setosa' ~ 'red',
    Species == 'virginica' ~ 'green',
    Species == 'versicolor' ~ 'blue'
  )) %>% 
  plot_ly(
    x = ~Sepal.Length,
    y = ~Sepal.Width,
    z = ~Petal.Width,
    type = 'scatter3d',
    mode = 'markers',
    marker = list(size = 1, color = ~color)
  ) 


results_iris_pc_smooth_curve <- results_iris_pc_s %>% mutate(color = 'black')
fig <- fig %>% 
  add_trace(
    data = results_iris_pc_smooth_curve,
    x = ~Sepal.Length,
    y = ~Sepal.Width,
    z = ~Petal.Width,
    type = 'scatter3d',
    mode = 'lines'
  )

fig
`arrange_()` is deprecated as of dplyr 0.7.0.
Please use `arrange()` instead.
See vignette('programming') for more help
This warning is displayed once every 8 hours.
Call `lifecycle::last_warnings()` to see where this warning was generated.A marker object has been specified, but markers is not in the mode
Adding markers to the mode...
A marker object has been specified, but markers is not in the mode
Adding markers to the mode...

Results in Principal Space

plot(results_iris_pc)

# Fitted line in PC dimension
iris_s_pc <- predict(results_iris_pc$ordination, results_iris_pc$s, type = "wa", scaling = 0)[, 1:2] %>% as.data.frame()

iris_pc <- predict(results_iris_pc$ordination, x, type = "wa", scaling = 0)[, 1:2] %>% as.data.frame()
iris_pc['y'] <- y

fig <- ggplot() +
  geom_line(data = iris_s_pc, mapping = aes(x = PC1, y = PC2)) +
  geom_point(data = iris_pc,  mapping = aes(x = PC1, y = PC2, color=y))

fig

x_new <- sample_n(x, size = 20)
# New date into PC space
s_new <- predict(results_iris_pc, x_new) # New data on curve
s_new_pc_space <- predict(results_iris_pc$ordination, s_new, type = "wa", scaling = 0)[, 1:2] %>% as.data.frame()# From curve to PC space

fig +
  geom_point(data = s_new_pc_space, mapping = aes(x = PC1, y = PC2))

Principal Surface

ICA

Simple example

# http://rstudio-pubs-static.s3.amazonaws.com/93614_be30df613b2a4707b3e5a1a62f631d19.html
# https://rdrr.io/cran/fastICA/man/fastICA.html

# Source matrix
S <- cbind(sin((1:1000)/20), rep((((1:200)-100)/100), 5))
# Mixing matrix
A <- matrix(c(0.29, 0.655, -0.543, 0.557), 2, 2)
# plot graphs
par(mfcol = c(1, 2))
plot(1:1000, S[,1], type = "l",xlab = "S1", ylab = "")
plot(1:1000, S[,2], type = "l", xlab = "S2", ylab = "")

# Mixed two signals
X <- S %*% A

par(mfcol = c(1, 2))
plot(1:1000, X[,1], type = "l",xlab = "X1", ylab = "")
plot(1:1000, X[,2], type = "l", xlab = "X2", ylab = "")

# ICA for extracting independent sources from mixed signals
a <- fastICA(X, 2, alg.typ = "parallel", fun = "logcosh", alpha = 1,
             method = "R", row.norm = FALSE, maxit = 200,
             tol = 0.0001, verbose = FALSE)

par(mfcol = c(1, 2))
plot(1:1000, a$S[,1], type = "l", xlab = "S'1", ylab = "")
plot(1:1000, a$S[,2], type = "l", xlab = "S'2", ylab = "")

par(mfcol = c(2, 3))
plot(1:1000, S[,1 ], type = "l", main = "Original Signals", 
     xlab = "", ylab = "")
plot(1:1000, S[,2 ], type = "l", xlab = "", ylab = "")
plot(1:1000, X[,1 ], type = "l", main = "Mixed Signals", 
     xlab = "", ylab = "")
plot(1:1000, X[,2 ], type = "l", xlab = "", ylab = "")
plot(1:1000, a$S[,1 ], type = "l", main = "ICA source estimates", 
     xlab = "", ylab = "")
plot(1:1000, a$S[, 2], type = "l", xlab = "", ylab = "")

Iris example

x <- iris[1:4]
y <- iris[5]
results_iris_ica <- fastICA(x, n.comp = 2)
results_iris_ica
$X
       Sepal.Length Sepal.Width Petal.Length   Petal.Width
  [1,]  -0.74333333  0.44266667       -2.358 -0.9993333333
  [2,]  -0.94333333 -0.05733333       -2.358 -0.9993333333
  [3,]  -1.14333333  0.14266667       -2.458 -0.9993333333
  [4,]  -1.24333333  0.04266667       -2.258 -0.9993333333
  [5,]  -0.84333333  0.54266667       -2.358 -0.9993333333
  [6,]  -0.44333333  0.84266667       -2.058 -0.7993333333
  [7,]  -1.24333333  0.34266667       -2.358 -0.8993333333
  [8,]  -0.84333333  0.34266667       -2.258 -0.9993333333
  [9,]  -1.44333333 -0.15733333       -2.358 -0.9993333333
 [10,]  -0.94333333  0.04266667       -2.258 -1.0993333333
 [11,]  -0.44333333  0.64266667       -2.258 -0.9993333333
 [12,]  -1.04333333  0.34266667       -2.158 -0.9993333333
 [13,]  -1.04333333 -0.05733333       -2.358 -1.0993333333
 [14,]  -1.54333333 -0.05733333       -2.658 -1.0993333333
 [15,]  -0.04333333  0.94266667       -2.558 -0.9993333333
 [16,]  -0.14333333  1.34266667       -2.258 -0.7993333333
 [17,]  -0.44333333  0.84266667       -2.458 -0.7993333333
 [18,]  -0.74333333  0.44266667       -2.358 -0.8993333333
 [19,]  -0.14333333  0.74266667       -2.058 -0.8993333333
 [20,]  -0.74333333  0.74266667       -2.258 -0.8993333333
 [21,]  -0.44333333  0.34266667       -2.058 -0.9993333333
 [22,]  -0.74333333  0.64266667       -2.258 -0.7993333333
 [23,]  -1.24333333  0.54266667       -2.758 -0.9993333333
 [24,]  -0.74333333  0.24266667       -2.058 -0.6993333333
 [25,]  -1.04333333  0.34266667       -1.858 -0.9993333333
 [26,]  -0.84333333 -0.05733333       -2.158 -0.9993333333
 [27,]  -0.84333333  0.34266667       -2.158 -0.7993333333
 [28,]  -0.64333333  0.44266667       -2.258 -0.9993333333
 [29,]  -0.64333333  0.34266667       -2.358 -0.9993333333
 [30,]  -1.14333333  0.14266667       -2.158 -0.9993333333
 [31,]  -1.04333333  0.04266667       -2.158 -0.9993333333
 [32,]  -0.44333333  0.34266667       -2.258 -0.7993333333
 [33,]  -0.64333333  1.04266667       -2.258 -1.0993333333
 [34,]  -0.34333333  1.14266667       -2.358 -0.9993333333
 [35,]  -0.94333333  0.04266667       -2.258 -0.9993333333
 [36,]  -0.84333333  0.14266667       -2.558 -0.9993333333
 [37,]  -0.34333333  0.44266667       -2.458 -0.9993333333
 [38,]  -0.94333333  0.54266667       -2.358 -1.0993333333
 [39,]  -1.44333333 -0.05733333       -2.458 -0.9993333333
 [40,]  -0.74333333  0.34266667       -2.258 -0.9993333333
 [41,]  -0.84333333  0.44266667       -2.458 -0.8993333333
 [42,]  -1.34333333 -0.75733333       -2.458 -0.8993333333
 [43,]  -1.44333333  0.14266667       -2.458 -0.9993333333
 [44,]  -0.84333333  0.44266667       -2.158 -0.5993333333
 [45,]  -0.74333333  0.74266667       -1.858 -0.7993333333
 [46,]  -1.04333333 -0.05733333       -2.358 -0.8993333333
 [47,]  -0.74333333  0.74266667       -2.158 -0.9993333333
 [48,]  -1.24333333  0.14266667       -2.358 -0.9993333333
 [49,]  -0.54333333  0.64266667       -2.258 -0.9993333333
 [50,]  -0.84333333  0.24266667       -2.358 -0.9993333333
 [51,]   1.15666667  0.14266667        0.942  0.2006666667
 [52,]   0.55666667  0.14266667        0.742  0.3006666667
 [53,]   1.05666667  0.04266667        1.142  0.3006666667
 [54,]  -0.34333333 -0.75733333        0.242  0.1006666667
 [55,]   0.65666667 -0.25733333        0.842  0.3006666667
 [56,]  -0.14333333 -0.25733333        0.742  0.1006666667
 [57,]   0.45666667  0.24266667        0.942  0.4006666667
 [58,]  -0.94333333 -0.65733333       -0.458 -0.1993333333
 [59,]   0.75666667 -0.15733333        0.842  0.1006666667
 [60,]  -0.64333333 -0.35733333        0.142  0.2006666667
 [61,]  -0.84333333 -1.05733333       -0.258 -0.1993333333
 [62,]   0.05666667 -0.05733333        0.442  0.3006666667
 [63,]   0.15666667 -0.85733333        0.242 -0.1993333333
 [64,]   0.25666667 -0.15733333        0.942  0.2006666667
 [65,]  -0.24333333 -0.15733333       -0.158  0.1006666667
 [66,]   0.85666667  0.04266667        0.642  0.2006666667
 [67,]  -0.24333333 -0.05733333        0.742  0.3006666667
 [68,]  -0.04333333 -0.35733333        0.342 -0.1993333333
 [69,]   0.35666667 -0.85733333        0.742  0.3006666667
 [70,]  -0.24333333 -0.55733333        0.142 -0.0993333333
 [71,]   0.05666667  0.14266667        1.042  0.6006666667
 [72,]   0.25666667 -0.25733333        0.242  0.1006666667
 [73,]   0.45666667 -0.55733333        1.142  0.3006666667
 [74,]   0.25666667 -0.25733333        0.942  0.0006666667
 [75,]   0.55666667 -0.15733333        0.542  0.1006666667
 [76,]   0.75666667 -0.05733333        0.642  0.2006666667
 [77,]   0.95666667 -0.25733333        1.042  0.2006666667
 [78,]   0.85666667 -0.05733333        1.242  0.5006666667
 [79,]   0.15666667 -0.15733333        0.742  0.3006666667
 [80,]  -0.14333333 -0.45733333       -0.258 -0.1993333333
 [81,]  -0.34333333 -0.65733333        0.042 -0.0993333333
 [82,]  -0.34333333 -0.65733333       -0.058 -0.1993333333
 [83,]  -0.04333333 -0.35733333        0.142  0.0006666667
 [84,]   0.15666667 -0.35733333        1.342  0.4006666667
 [85,]  -0.44333333 -0.05733333        0.742  0.3006666667
 [86,]   0.15666667  0.34266667        0.742  0.4006666667
 [87,]   0.85666667  0.04266667        0.942  0.3006666667
 [88,]   0.45666667 -0.75733333        0.642  0.1006666667
 [89,]  -0.24333333 -0.05733333        0.342  0.1006666667
 [90,]  -0.34333333 -0.55733333        0.242  0.1006666667
 [91,]  -0.34333333 -0.45733333        0.642  0.0006666667
 [92,]   0.25666667 -0.05733333        0.842  0.2006666667
 [93,]  -0.04333333 -0.45733333        0.242  0.0006666667
 [94,]  -0.84333333 -0.75733333       -0.458 -0.1993333333
 [95,]  -0.24333333 -0.35733333        0.442  0.1006666667
 [96,]  -0.14333333 -0.05733333        0.442  0.0006666667
 [97,]  -0.14333333 -0.15733333        0.442  0.1006666667
 [98,]   0.35666667 -0.15733333        0.542  0.1006666667
 [99,]  -0.74333333 -0.55733333       -0.758 -0.0993333333
[100,]  -0.14333333 -0.25733333        0.342  0.1006666667
[101,]   0.45666667  0.24266667        2.242  1.3006666667
[102,]  -0.04333333 -0.35733333        1.342  0.7006666667
[103,]   1.25666667 -0.05733333        2.142  0.9006666667
[104,]   0.45666667 -0.15733333        1.842  0.6006666667
[105,]   0.65666667 -0.05733333        2.042  1.0006666667
[106,]   1.75666667 -0.05733333        2.842  0.9006666667
[107,]  -0.94333333 -0.55733333        0.742  0.5006666667
[108,]   1.45666667 -0.15733333        2.542  0.6006666667
[109,]   0.85666667 -0.55733333        2.042  0.6006666667
[110,]   1.35666667  0.54266667        2.342  1.3006666667
[111,]   0.65666667  0.14266667        1.342  0.8006666667
[112,]   0.55666667 -0.35733333        1.542  0.7006666667
[113,]   0.95666667 -0.05733333        1.742  0.9006666667
[114,]  -0.14333333 -0.55733333        1.242  0.8006666667
[115,]  -0.04333333 -0.25733333        1.342  1.2006666667
[116,]   0.55666667  0.14266667        1.542  1.1006666667
[117,]   0.65666667 -0.05733333        1.742  0.6006666667
[118,]   1.85666667  0.74266667        2.942  1.0006666667
[119,]   1.85666667 -0.45733333        3.142  1.1006666667
[120,]   0.15666667 -0.85733333        1.242  0.3006666667
[121,]   1.05666667  0.14266667        1.942  1.1006666667
[122,]  -0.24333333 -0.25733333        1.142  0.8006666667
[123,]   1.85666667 -0.25733333        2.942  0.8006666667
[124,]   0.45666667 -0.35733333        1.142  0.6006666667
[125,]   0.85666667  0.24266667        1.942  0.9006666667
[126,]   1.35666667  0.14266667        2.242  0.6006666667
[127,]   0.35666667 -0.25733333        1.042  0.6006666667
[128,]   0.25666667 -0.05733333        1.142  0.6006666667
[129,]   0.55666667 -0.25733333        1.842  0.9006666667
[130,]   1.35666667 -0.05733333        2.042  0.4006666667
[131,]   1.55666667 -0.25733333        2.342  0.7006666667
[132,]   2.05666667  0.74266667        2.642  0.8006666667
[133,]   0.55666667 -0.25733333        1.842  1.0006666667
[134,]   0.45666667 -0.25733333        1.342  0.3006666667
[135,]   0.25666667 -0.45733333        1.842  0.2006666667
[136,]   1.85666667 -0.05733333        2.342  1.1006666667
[137,]   0.45666667  0.34266667        1.842  1.2006666667
[138,]   0.55666667  0.04266667        1.742  0.6006666667
[139,]   0.15666667 -0.05733333        1.042  0.6006666667
[140,]   1.05666667  0.04266667        1.642  0.9006666667
[141,]   0.85666667  0.04266667        1.842  1.2006666667
[142,]   1.05666667  0.04266667        1.342  1.1006666667
[143,]  -0.04333333 -0.35733333        1.342  0.7006666667
[144,]   0.95666667  0.14266667        2.142  1.1006666667
[145,]   0.85666667  0.24266667        1.942  1.3006666667
[146,]   0.85666667 -0.05733333        1.442  1.1006666667
[147,]   0.45666667 -0.55733333        1.242  0.7006666667
[148,]   0.65666667 -0.05733333        1.442  0.8006666667
[149,]   0.35666667  0.34266667        1.642  1.1006666667
[150,]   0.05666667 -0.05733333        1.342  0.6006666667
attr(,"scaled:center")
Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
    5.843333     3.057333     3.758000     1.199333 

$K
           [,1]       [,2]
[1,] -0.1763375 -1.3373258
[2,]  0.0412425 -1.4871770
[3,] -0.4180098  0.3531217
[4,] -0.1748261  0.1537381

$W
           [,1]       [,2]
[1,] -0.1089140 -0.9940512
[2,] -0.9940512  0.1089140

$A
          [,1]       [,2]      [,3]       [,4]
[1,] 0.4011132  0.3374897 0.1066016 0.04313466
[2,] 0.7011108 -0.2112346 1.7544902 0.73394717

$S
              [,1]        [,2]
  [1,]  0.50402567 -1.37277267
  [2,] -0.50260862 -1.27721394
  [3,] -0.44700677 -1.36913354
  [4,] -0.79034697 -1.26100329
  [5,]  0.51655190 -1.39603332
  [6,]  1.37972905 -1.27076978
  [7,] -0.33102437 -1.34824001
  [8,]  0.19123487 -1.31004072
  [9,] -1.32428040 -1.27173431
 [10,] -0.37239594 -1.27116582
 [11,]  1.17281670 -1.35907816
 [12,] -0.10902971 -1.27056943
 [13,] -0.62408796 -1.29923047
 [14,] -1.20672774 -1.45024289
 [15,]  2.24604672 -1.54431049
 [16,]  2.58231972 -1.45416162
 [17,]  1.50192662 -1.45236299
 [18,]  0.49064742 -1.35371964
 [19,]  1.65029626 -1.26063516
 [20,]  0.90224949 -1.36921278
 [21,]  0.66956645 -1.20739011
 [22,]  0.74148741 -1.32986260
 [23,]  0.09931911 -1.58948054
 [24,]  0.07747509 -1.13882437
 [25,] -0.20067790 -1.13437453
 [26,] -0.42884981 -1.18345383
 [27,]  0.13392896 -1.22653636
 [28,]  0.60833387 -1.32441087
 [29,]  0.49149945 -1.34951202
 [30,] -0.53865495 -1.23293864
 [31,] -0.55118118 -1.20967799
 [32,]  0.70390873 -1.26008064
 [33,]  1.50601505 -1.46524679
 [34,]  2.07514279 -1.50299870
 [35,] -0.38577419 -1.25211278
 [36,] -0.01188459 -1.40564133
 [37,]  1.07400544 -1.40631696
 [38,]  0.39507256 -1.41804986
 [39,] -1.14634719 -1.33742976
 [40,]  0.32609246 -1.30707722
 [41,]  0.38633922 -1.40208144
 [42,] -2.05655460 -1.17333318
 [43,] -0.85157955 -1.37802405
 [44,]  0.25455627 -1.20872744
 [45,]  0.76667366 -1.16856655
 [46,] -0.65084446 -1.26112441
 [47,]  0.88507835 -1.34286751
 [48,] -0.61241375 -1.32669874
 [49,]  1.03795911 -1.36204166
 [50,]  0.07440044 -1.33514188
 [51,]  1.45549942  0.47120568
 [52,]  0.69407440  0.38168109
 [53,]  1.09878097  0.59838896
 [54,] -1.66659485  0.27258632
 [55,]  0.20884731  0.51123148
 [56,] -0.81270753  0.40401909
 [57,]  0.63212358  0.46827007
 [58,] -2.07437607 -0.14043906
 [59,]  0.51784524  0.45579177
 [60,] -1.46446121  0.15616194
 [61,] -2.59015254  0.03450964
 [62,] -0.18333303  0.27126296
 [63,] -1.09955594  0.25054189
 [64,] -0.20037038  0.50542559
 [65,] -0.52523676 -0.02782627
 [66,]  0.99519100  0.34641741
 [67,] -0.67955399  0.39856735
 [68,] -0.66290142  0.18852744
 [69,] -1.04947900  0.57872556
 [70,] -1.17966371  0.15145116
 [71,] -0.11199651  0.56021757
 [72,] -0.12053019  0.18888160
 [73,] -0.59466752  0.70239083
 [74,] -0.32099769  0.48761667
 [75,]  0.33977823  0.31366986
 [76,]  0.71294959  0.36375106
 [77,]  0.56569956  0.59186556
 [78,]  0.62437606  0.69626347
 [79,] -0.28750744  0.43071852
 [80,] -0.76184647 -0.06652873
 [81,] -1.43135573  0.12338650
 [82,] -1.38742808  0.05893517
 [83,] -0.62855914  0.13583690
 [84,] -0.77894970  0.76275565
 [85,] -0.94926918  0.39264034
 [86,]  0.43603341  0.34828581
 [87,]  0.89016457  0.50166535
 [88,] -0.70993168  0.47788755
 [89,] -0.53059990  0.17886808
 [90,] -1.37182721  0.23199202
 [91,] -1.33326271  0.37423504
 [92,] -0.02243716  0.43973014
 [93,] -0.80649235  0.20153235
 [94,] -2.08690229 -0.11717841
 [95,] -1.00330076  0.28515783
 [96,] -0.41291345  0.20817685
 [97,] -0.57367553  0.24752704
 [98,]  0.07006305  0.30774286
 [99,] -1.57900713 -0.27195107
[100,] -0.69050995  0.22242588
[101,]  0.11457717  1.22992528
[102,] -1.08879965  0.81398774
[103,]  0.83534886  1.19291432
[104,] -0.25911276  0.99614944
[105,]  0.04337444  1.14878803
[106,]  1.29579107  1.52551995
[107,] -2.38723276  0.51741463
[108,]  0.87561742  1.34357258
[109,] -0.37031646  1.17998865
[110,]  1.73989757  1.24110367
[111,]  0.57874435  0.75229956
[112,] -0.34075288  0.92256537
[113,]  0.55297366  1.00243061
[114,] -1.50125375  0.82527327
[115,] -1.00830710  0.88895576
[116,]  0.34265321  0.89729176
[117,]  0.18853564  0.93638100
[118,]  2.56579158  1.43055760
[119,]  0.72270869  1.78397301
[120,] -1.47194115  0.79979006
[121,]  0.89474360  1.09370248
[122,] -1.16341048  0.71602002
[123,]  1.11870988  1.59542302
[124,] -0.34003464  0.71895563
[125,]  0.79916874  1.02937226
[126,]  1.27455947  1.14352273
[127,] -0.29695902  0.65029667
[128,] -0.16759836  0.65213717
[129,] -0.31177375  1.07656919
[130,]  1.06764712  1.05521436
[131,]  0.91081172  1.29508967
[132,]  2.95391146  1.26218364
[133,] -0.32515200  1.09562222
[134,] -0.21361484  0.73229598
[135,] -0.91746639  0.97490174
[136,]  1.55663912  1.33959801
[137,]  0.39753682  1.00898189
[138,]  0.20106187  0.91312034
[139,] -0.27190656  0.60377537
[140,]  0.86576447  0.93969866
[141,]  0.49481573  1.08172735
[142,]  0.93065614  0.84160982
[143,] -1.08879965  0.81398774
[144,]  0.69878722  1.18153558
[145,]  0.74565572  1.10558439
[146,]  0.48300774  0.90137827
[147,] -0.67872993  0.82400126
[148,]  0.25342732  0.83829216
[149,]  0.33715627  0.89616875
[150,] -0.49841234  0.73700677
# TODO: Explain different matrices
S <- data.frame(results_iris_ica$S)
S['class'] <- y

ggplot(S, aes(x = X1, y = X2, color = class)) + 
  geom_point()

NMF

Iris example

x <- iris[1:4]
y <- iris[5]

results_iris_nmf <- nmf(x, rank = 2)
results_iris_nmf
<Object of class: NMFfit>
 # Model:
  <Object of class:NMFstd>
  features: 150 
  basis/rank: 2 
  samples: 4 
 # Details:
  algorithm:  brunet 
  seed:  random 
  RNG: 10403L, 549L, ..., -2055123143L [8ba4ddbbcabfbabba5fd914f935097ad]
  distance metric:  'KL' 
  residuals:  3.084418 
  Iterations: 430 
  Timing:
     user  system elapsed 
    0.029   0.000   0.029 
results_iris_nmf_H <- results_iris_nmf@fit@H
results_iris_nmf_H
     Sepal.Length Sepal.Width Petal.Length Petal.Width
[1,]    0.5950490   0.4250607    0.1258363 0.006471954
[2,]    0.8394181   0.3049070    0.8431681 0.308871043
results_iris_nmf_W <- data.frame(results_iris_nmf@fit@W)
results_iris_nmf_W
results_iris_nmf_W['y'] <- y

ggplot() +
  geom_point(data = results_iris_nmf_W, aes(x = X1, y = X2, color = y))

LS0tCnRpdGxlOiAiQWR2YW5jZWQgZGltZW5zaW9uIHJlZHVjdGlvbiBtZXRob2RzIChpbmNsdWRpbmcgUHJpbmNpcGFsIEN1cnZlcyBhbmQgc3VyZmFjZXMsIEluZGVwZW5kZW50IENvbXBvbmVudCBBbmFseXNpcywgTm9uLW5lZ2F0aXZlIE1hdHJpeCBGYWN0b3JpemF0aW9uKSIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKIyBJbnRyb2R1Y3Rpb24KCmBgYHtyfQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkocGxvdGx5KQoKbGlicmFyeShhbmFsb2d1ZSkgIyBQcmluY2lwYWwgQ3VydmVzIHdyYXBwZXIKbGlicmFyeShmYXN0SUNBKQpsaWJyYXJ5KE5NRikKCmRhdGEoImlyaXMiKQpgYGAKCiMgUHJpbmNpcGFsIEN1cnZlcwoKIyMgRml0dGluZyBwcmluY2lwYWwgY3VydmVzCmBgYHtyfQojIGh0dHBzOi8vZnJvbXRoZWJvdHRvbW9mdGhlaGVhcC5uZXQvMjAxNC8wMS8wOS9wY3VydmUtcGFydC0yLwoKeCA8LSBpcmlzWzE6NF0KeSA8LSBpcmlzWzVdCgpyZXN1bHRzX2lyaXNfcGMgPC0gcHJjdXJ2ZSh4LCBtYXhpdCA9IDEwMCkKcmVzdWx0c19pcmlzX3BjCmBgYAoKIyMgUmVzdWx0cyBpbiAyRApgYGB7cn0KcmVzdWx0c19pcmlzX3BjX3MgPC0gZGF0YS5mcmFtZShyZXN1bHRzX2lyaXNfcGMkc1tyZXN1bHRzX2lyaXNfcGMkdGFnLCBdKQpyZXN1bHRzX2lyaXNfcGNfc1sneSddIDwtIHkKCmdncGxvdCgpICsgCiAgZ2VvbV9saW5lKGRhdGEgPSByZXN1bHRzX2lyaXNfcGNfcywgbWFwcGluZyA9IGFlcyh4ID0gUGV0YWwuTGVuZ3RoLCB5ID0gUGV0YWwuV2lkdGgpKSArCiAgZ2VvbV9wb2ludChkYXRhID0gaXJpcywgbWFwcGluZyA9IGFlcyh4ID0gUGV0YWwuTGVuZ3RoLCB5ID0gUGV0YWwuV2lkdGgsIGNvbG9yID0gU3BlY2llcykpCmBgYAoKIyMgUmVzdWx0cyBpbiAzRApgYGB7cn0KZmlnIDwtIGlyaXMgJT4lIAogIG11dGF0ZShjb2xvciA9IGNhc2Vfd2hlbigKICAgIFNwZWNpZXMgPT0gJ3NldG9zYScgfiAncmVkJywKICAgIFNwZWNpZXMgPT0gJ3ZpcmdpbmljYScgfiAnZ3JlZW4nLAogICAgU3BlY2llcyA9PSAndmVyc2ljb2xvcicgfiAnYmx1ZScKICApKSAlPiUgCiAgcGxvdF9seSgKICAgIHggPSB+U2VwYWwuTGVuZ3RoLAogICAgeSA9IH5TZXBhbC5XaWR0aCwKICAgIHogPSB+UGV0YWwuV2lkdGgsCiAgICB0eXBlID0gJ3NjYXR0ZXIzZCcsCiAgICBtb2RlID0gJ21hcmtlcnMnLAogICAgbWFya2VyID0gbGlzdChzaXplID0gMSwgY29sb3IgPSB+Y29sb3IpCiAgKSAKCgpyZXN1bHRzX2lyaXNfcGNfc21vb3RoX2N1cnZlIDwtIHJlc3VsdHNfaXJpc19wY19zICU+JSBtdXRhdGUoY29sb3IgPSAnYmxhY2snKQpmaWcgPC0gZmlnICU+JSAKICBhZGRfdHJhY2UoCiAgICBkYXRhID0gcmVzdWx0c19pcmlzX3BjX3Ntb290aF9jdXJ2ZSwKICAgIHggPSB+U2VwYWwuTGVuZ3RoLAogICAgeSA9IH5TZXBhbC5XaWR0aCwKICAgIHogPSB+UGV0YWwuV2lkdGgsCiAgICB0eXBlID0gJ3NjYXR0ZXIzZCcsCiAgICBtb2RlID0gJ2xpbmVzJwogICkKCmZpZwpgYGAKCiMjIFJlc3VsdHMgaW4gUHJpbmNpcGFsIFNwYWNlCmBgYHtyfQpwbG90KHJlc3VsdHNfaXJpc19wYykKYGBgCgoKYGBge3J9CiMgRml0dGVkIGxpbmUgaW4gUEMgZGltZW5zaW9uCmlyaXNfc19wYyA8LSBwcmVkaWN0KHJlc3VsdHNfaXJpc19wYyRvcmRpbmF0aW9uLCByZXN1bHRzX2lyaXNfcGMkcywgdHlwZSA9ICJ3YSIsIHNjYWxpbmcgPSAwKVssIDE6Ml0gJT4lIGFzLmRhdGEuZnJhbWUoKQoKaXJpc19wYyA8LSBwcmVkaWN0KHJlc3VsdHNfaXJpc19wYyRvcmRpbmF0aW9uLCB4LCB0eXBlID0gIndhIiwgc2NhbGluZyA9IDApWywgMToyXSAlPiUgYXMuZGF0YS5mcmFtZSgpCmlyaXNfcGNbJ3knXSA8LSB5CgpmaWcgPC0gZ2dwbG90KCkgKwogIGdlb21fbGluZShkYXRhID0gaXJpc19zX3BjLCBtYXBwaW5nID0gYWVzKHggPSBQQzEsIHkgPSBQQzIpKSArCiAgZ2VvbV9wb2ludChkYXRhID0gaXJpc19wYywgIG1hcHBpbmcgPSBhZXMoeCA9IFBDMSwgeSA9IFBDMiwgY29sb3I9eSkpCgpmaWcKYGBgCgoKYGBge3J9CnhfbmV3IDwtIHNhbXBsZV9uKHgsIHNpemUgPSAyMCkKIyBOZXcgZGF0ZSBpbnRvIFBDIHNwYWNlCnNfbmV3IDwtIHByZWRpY3QocmVzdWx0c19pcmlzX3BjLCB4X25ldykgIyBOZXcgZGF0YSBvbiBjdXJ2ZQpzX25ld19wY19zcGFjZSA8LSBwcmVkaWN0KHJlc3VsdHNfaXJpc19wYyRvcmRpbmF0aW9uLCBzX25ldywgdHlwZSA9ICJ3YSIsIHNjYWxpbmcgPSAwKVssIDE6Ml0gJT4lIGFzLmRhdGEuZnJhbWUoKSMgRnJvbSBjdXJ2ZSB0byBQQyBzcGFjZQoKZmlnICsKICBnZW9tX3BvaW50KGRhdGEgPSBzX25ld19wY19zcGFjZSwgbWFwcGluZyA9IGFlcyh4ID0gUEMxLCB5ID0gUEMyKSkKYGBgCgojIFByaW5jaXBhbCBTdXJmYWNlCgoKCgojIElDQQoKIyMgU2ltcGxlIGV4YW1wbGUKYGBge3J9CiMgaHR0cDovL3JzdHVkaW8tcHVicy1zdGF0aWMuczMuYW1hem9uYXdzLmNvbS85MzYxNF9iZTMwZGY2MTNiMmE0NzA3YjNlNWExYTYyZjYzMWQxOS5odG1sCiMgaHR0cHM6Ly9yZHJyLmlvL2NyYW4vZmFzdElDQS9tYW4vZmFzdElDQS5odG1sCgojIFNvdXJjZSBtYXRyaXgKUyA8LSBjYmluZChzaW4oKDE6MTAwMCkvMjApLCByZXAoKCgoMToyMDApLTEwMCkvMTAwKSwgNSkpCiMgTWl4aW5nIG1hdHJpeApBIDwtIG1hdHJpeChjKDAuMjksIDAuNjU1LCAtMC41NDMsIDAuNTU3KSwgMiwgMikKIyBwbG90IGdyYXBocwpwYXIobWZjb2wgPSBjKDEsIDIpKQpwbG90KDE6MTAwMCwgU1ssMV0sIHR5cGUgPSAibCIseGxhYiA9ICJTMSIsIHlsYWIgPSAiIikKcGxvdCgxOjEwMDAsIFNbLDJdLCB0eXBlID0gImwiLCB4bGFiID0gIlMyIiwgeWxhYiA9ICIiKQpgYGAKCmBgYHtyfQojIE1peGVkIHR3byBzaWduYWxzClggPC0gUyAlKiUgQQoKcGFyKG1mY29sID0gYygxLCAyKSkKcGxvdCgxOjEwMDAsIFhbLDFdLCB0eXBlID0gImwiLHhsYWIgPSAiWDEiLCB5bGFiID0gIiIpCnBsb3QoMToxMDAwLCBYWywyXSwgdHlwZSA9ICJsIiwgeGxhYiA9ICJYMiIsIHlsYWIgPSAiIikKYGBgCgpgYGB7cn0KIyBJQ0EgZm9yIGV4dHJhY3RpbmcgaW5kZXBlbmRlbnQgc291cmNlcyBmcm9tIG1peGVkIHNpZ25hbHMKYSA8LSBmYXN0SUNBKFgsIDIsIGFsZy50eXAgPSAicGFyYWxsZWwiLCBmdW4gPSAibG9nY29zaCIsIGFscGhhID0gMSwKICAgICAgICAgICAgIG1ldGhvZCA9ICJSIiwgcm93Lm5vcm0gPSBGQUxTRSwgbWF4aXQgPSAyMDAsCiAgICAgICAgICAgICB0b2wgPSAwLjAwMDEsIHZlcmJvc2UgPSBGQUxTRSkKCnBhcihtZmNvbCA9IGMoMSwgMikpCnBsb3QoMToxMDAwLCBhJFNbLDFdLCB0eXBlID0gImwiLCB4bGFiID0gIlMnMSIsIHlsYWIgPSAiIikKcGxvdCgxOjEwMDAsIGEkU1ssMl0sIHR5cGUgPSAibCIsIHhsYWIgPSAiUycyIiwgeWxhYiA9ICIiKQpgYGAKCmBgYHtyfQpwYXIobWZjb2wgPSBjKDIsIDMpKQpwbG90KDE6MTAwMCwgU1ssMSBdLCB0eXBlID0gImwiLCBtYWluID0gIk9yaWdpbmFsIFNpZ25hbHMiLCAKICAgICB4bGFiID0gIiIsIHlsYWIgPSAiIikKcGxvdCgxOjEwMDAsIFNbLDIgXSwgdHlwZSA9ICJsIiwgeGxhYiA9ICIiLCB5bGFiID0gIiIpCnBsb3QoMToxMDAwLCBYWywxIF0sIHR5cGUgPSAibCIsIG1haW4gPSAiTWl4ZWQgU2lnbmFscyIsIAogICAgIHhsYWIgPSAiIiwgeWxhYiA9ICIiKQpwbG90KDE6MTAwMCwgWFssMiBdLCB0eXBlID0gImwiLCB4bGFiID0gIiIsIHlsYWIgPSAiIikKcGxvdCgxOjEwMDAsIGEkU1ssMSBdLCB0eXBlID0gImwiLCBtYWluID0gIklDQSBzb3VyY2UgZXN0aW1hdGVzIiwgCiAgICAgeGxhYiA9ICIiLCB5bGFiID0gIiIpCnBsb3QoMToxMDAwLCBhJFNbLCAyXSwgdHlwZSA9ICJsIiwgeGxhYiA9ICIiLCB5bGFiID0gIiIpCmBgYAoKIyMgSXJpcyBleGFtcGxlCmBgYHtyfQp4IDwtIGlyaXNbMTo0XQp5IDwtIGlyaXNbNV0KYGBgCgpgYGB7cn0KcmVzdWx0c19pcmlzX2ljYSA8LSBmYXN0SUNBKHgsIG4uY29tcCA9IDIpCnJlc3VsdHNfaXJpc19pY2EKIyBUT0RPOiBFeHBsYWluIGRpZmZlcmVudCBtYXRyaWNlcwpgYGAKCmBgYHtyfQpTIDwtIGRhdGEuZnJhbWUocmVzdWx0c19pcmlzX2ljYSRTKQpTWydjbGFzcyddIDwtIHkKCmdncGxvdChTLCBhZXMoeCA9IFgxLCB5ID0gWDIsIGNvbG9yID0gY2xhc3MpKSArIAogIGdlb21fcG9pbnQoKQpgYGAKCiMgTk1GCgojIyBJcmlzIGV4YW1wbGUKYGBge3J9CnggPC0gaXJpc1sxOjRdCnkgPC0gaXJpc1s1XQoKcmVzdWx0c19pcmlzX25tZiA8LSBubWYoeCwgcmFuayA9IDIpCnJlc3VsdHNfaXJpc19ubWYKYGBgCgpgYGB7cn0KcmVzdWx0c19pcmlzX25tZl9IIDwtIHJlc3VsdHNfaXJpc19ubWZAZml0QEgKcmVzdWx0c19pcmlzX25tZl9ICmBgYApgYGB7cn0KcmVzdWx0c19pcmlzX25tZl9XIDwtIGRhdGEuZnJhbWUocmVzdWx0c19pcmlzX25tZkBmaXRAVykKcmVzdWx0c19pcmlzX25tZl9XCmBgYAoKYGBge3J9CnJlc3VsdHNfaXJpc19ubWZfV1sneSddIDwtIHkKCmdncGxvdCgpICsKICBnZW9tX3BvaW50KGRhdGEgPSByZXN1bHRzX2lyaXNfbm1mX1csIGFlcyh4ID0gWDEsIHkgPSBYMiwgY29sb3IgPSB5KSkKYGBgCgo=